#ifndef CLICK_IGMPROUTER_HH
#define CLICK_IGMPROUTER_HH
#include <click/config.h>
#include <click/element.hh>
#include <click/timer.hh>
#include <click/bighashmap.hh>
#include "igmprouterstate.hh"


CLICK_DECLS

/** \brief Responsible for filtering traffic destined to group and maintaining states for this multicast group by communicating with the clients (querying) (see rfc3376 p24)
 *
 */
class IGMPRouter: public Element {
	public:
		IGMPRouter();
		virtual ~IGMPRouter();
		const char *class_name() const	{ return "IGMPRouter"; }
		const char *port_count() const	{ return "1-/1"; }
		const char *processing() const	{ return AGNOSTIC; }
		
		int configure(Vector<String>&, ErrorHandler*);

		Packet* pull(int);
		void push(int, Packet *);

		int initialize(ErrorHandler *);
	private:

};

CLICK_ENDDECLS

#endif //CLICK_IGMPROUTER_HH
